package com.anxin.act.task.dao;

import java.util.List;

import com.anxin.act.task.entity.WfPushLog;
import com.anxin.framework.web.dao.BaseDao;
import org.apache.ibatis.annotations.Param;

/**
 * 流程任务推送记录Dao接口
 *
 * @author jbs
 * @date 2022-04-13
 */
public interface WfPushLogDao extends BaseDao<WfPushLog>{
    /**
     * 查询流程任务推送记录
     *
     * @param id 流程任务推送记录ID
     * @return 流程任务推送记录
     */
    public WfPushLog getById(String id);

    /**
     * 查询流程任务推送记录列表
     *
     * @param wfPushLog 流程任务推送记录
     * @return 流程任务推送记录集合
     */
    public List<WfPushLog> findList(WfPushLog wfPushLog);


    /**
     *  根据taskId查询推送过的任务
     * @param taskId 任务ID
     * @param pushType 任务ID
     * @return
     */
    public List<WfPushLog> findListByTaskId(@Param("taskId")String taskId,@Param("pushType") String pushType);


    /**
     * 根据taskId和Owner查询推送过的任务列表
     * @param taskId 任务ID
     * @param taskId 任务拥有人
     * @return
     */
    public List<WfPushLog> findListByActOwner(@Param("taskId") String taskId,@Param("actOwner")String actOwner);


    /**
     * 根据actId查询推送过的任务
     * @param actId 任务ID
     * @return
     */
    public List<WfPushLog> findListByActId(String actId);

    /**
     * 删除已办推送数据
     * @param taskId 任务ID
     * @param actOwner 任务拥有者
     */
    public void delHiTask(@Param("taskId") String taskId,@Param("actOwner")String actOwner);


    /**
     * 根据taskId查询是否发送过待办提醒
     * @param taskId taskId
     * @return
     */
    public Integer getTodoCountByTaskId(@Param("taskId") String taskId,@Param("actOwner") String actOwner);


    /**
     * 新增流程任务推送记录
     *
     * @param wfPushLog 流程任务推送记录
     * @return 结果
     */
    public int insert(WfPushLog wfPushLog);

    /**
     * 修改流程任务推送记录
     *
     * @param wfPushLog 流程任务推送记录
     * @return 结果
     */
    public int update(WfPushLog wfPushLog);

    /**
     * 修改流程任务推送记录状态
     *
     * @param id Id
     * @return 结果
     */
    public int updateStatus(String id);

    /**
     * 删除流程任务推送记录
     *
     * @param taskId 流程任务推送记录ID
     * @param actAssignee 操作人ID
     * @return 结果
     */
    public int deleteByTaskId(@Param("taskId")String taskId,@Param("actAssignee")String actAssignee);


    WfPushLog findByTaskId(@Param("taskId") String taskId, @Param("pushType") String pushType);

    List<WfPushLog> findByActId(@Param("refId") String refId, @Param("userId") String useId);

    String selectTaskId(@Param("actId") String actId, @Param("userId") String userId);

    WfPushLog selectWfPushLog(WfPushLog wfPushLog);
}
